Copyright ã1995 by NeXT Computer, Inc.  All Rights Reserved.

NS_DEV_DOCFOR:objc_class:FontPanel;,FontPanel

Inherits From:	Panel : Window : Responder : Object

Declared In:	appkit/FontPanel.h

Class Description

The FontPanel is a user-interface object that displays a list of available fonts, letting the user preview them and change the font used to display text.  The actual changes are made through conversion messages sent to the FontManager.  There is only one FontPanel object for each application.

In general, you add the facilities of the FontPanel (and of the other components of the font conversion system:  the FontManager and the Font menu) to your application through Interface Builder.  You do this by dragging a Font menu into one of your application's menus.  At runtime, when the user chooses the Font Panel command for the first time, the FontPanel object will be created and hooked into the font conversion system.  You can also create (or access) the FontPanel through either of the new... methods.  

A FontPanel can be customized by adding an additional View object or hierarchy of View objects (see setAccessoryView:).  If you want the FontManager to instantiate a panel object from some class other than FontPanel, use the FontManager's setFontPanelFactory: method.

Instance Variables

id faces;

id families;

id preview;

id current;

id size;

id sizes;

id manager;

id selFont;

NXFontMetrics *selMetrics;

int curTag;

id accessoryView;

id setButton;

id separator;

id sizeTitle;

char *lastPreview;

struct _fpFlags {
	unsigned int  multipleFont:1;
	unsigned int  dirty:1;

} fpFlags;

faces 	The Typeface browser.

families 	The Family browser.

preview 	The preview field.

current 	The current font field.

size 	The Size field.

sizes 	The Size browser.

manager 	The FontManager object.

selFont 	The font of the current selection.

selMetrics 	The metrics of selFont.

curTag 	The tag of the currently displayed font.

accessoryView 	The application-customized area.

currentBox 	The box displaying the current font.

setButton 	The Set button.

separator 	The line separating buttons from upper part of panel.

sizeTitle 	The title over the Size field and Size browser.

lastPreview 	The last font previewed.

fpFlags.multipleFont 	True if selection has multiple fonts.

fpFlags.dirty 	True if panel was updated while not visible.

Method Types

Creating a FontPanel	+ new
+ newContent:style:backing:buttonMask:defer:

Setting the font	- panelConvertFont:
- setPanelFont:isMultiple:

Configuring the FontPanel	- accessoryView 
- setAccessoryView:
- setEnabled:
- isEnabled
- worksWhenModal

Editing the FontPanel's fields	- textDidGetKeys:isEmpty:  
- textDidEnd:endChar:

Displaying the FontPanel	- orderWindow:relativeTo:

Resizing the FontPanel	- windowWillResize:toSize:

Class Methods

NS_DEV_DOCFOR:objc_method:[FontPanel-alloc];,alloc

Disables the inherited alloc method to prevent multiple FontPanels from being created.  There's only one FontPanel object for each application; you access it through either of the new... methods.  Returns an error message.

See also:  + new, + newContent:style:backing:buttonMask:defer:

NS_DEV_DOCFOR:objc_method:[FontPanel-allocFromZone:];,allocFromZone:

Disables the inherited allocFromZone method to prevent multiple FontPanels from being created.  There's only one FontPanel object for each application; you access it through either of the new... methods.  Returns an error message.

See also:  + new, + newContent:style:backing:buttonMask:defer:

NS_DEV_DOCFOR:objc_method:[FontPanel-new];,new

+ new

Returns a FontPanel object by invoking the newContent:style:backing:buttonMask:defer: method.  An application has no more than one Font panel, so this method either returns the previously created object (if it exists) or creates a new one.  

See also:  + new

NS_DEV_DOCFOR:objc_method:[FontPanel-newContent:style:backing:buttonMask:defer:];,newContent:style:backing:buttonMask:defer:

+ newContent:(const NXRect *)contentRect 
style:(int)aStyle 
backing:(int)bufferingType
buttonMask:(int)mask
defer:(BOOL)flag

Returns a FontPanel object.  An application has no more than one Font panel, so this method either returns the previously created object (if it exists) or creates a new one.  The arguments are ignored.  This is the designated new... method of the FontPanel class.

See also:  + new

Instance Methods

NS_DEV_DOCFOR:objc_method:[FontPanel-accessoryView];,accessoryView

- accessoryView

Returns the application-customized View set by setAccessoryView:.

See also:  - setAccessoryView:

NS_DEV_DOCFOR:objc_method:[FontPanel-isEnabled];,isEnabled

- (BOOL)isEnabled

Reports whether the Font panel's Set button is enabled. 

See also:  - setEnabled:

NS_DEV_DOCFOR:objc_method:[FontPanel-orderWindow:relativeTo:];,orderWindow:relativeTo:

- orderWindow:(int)place relativeTo:(int)otherWin

Repositions the panel in the screen list and updates the panel if it was changed while not visible.  place can be one of:

NX_ABOVE 
NX_BELOW 
NX_OUT

If it's NX_OUT, the panel is removed from the screen list and otherWin is ignored.  If it's NX_ABOVE or NX_BELOW, otherWin is the window number of the window that the Font Panel is to be placed above or below.  If otherWin is 0, the panel will be placed above or below all other windows.

See also:  - orderWindow:relativeTo: (Window), - makeKeyAndOrderFront: (Window)

NS_DEV_DOCFOR:objc_method:[FontPanel-panelConvertFont:];,panelConvertFont:

- panelConvertFont:fontObj

Returns a Font object whose traits are the same as those of fontObj except as specified by the users choices in the Font Panel.  If the conversion can't be made, the method returns fontObj itself.  The FontPanel makes the conversion by using the FontManager's methods that convert fonts.  A panelConvertFont: message is sent by the FontManager whenever it needs to convert a font as a result of user actions in the Font panel.  

NS_DEV_DOCFOR:objc_method:[FontPanel-setAccessoryView:];,setAccessoryView:

- setAccessoryView:aView

Customizes the Font panel by adding aView above the action buttons at the bottom of the panel.  The FontPanel is automatically resized to accommodate aView.

aView should be the top View in a view hierarchy.  If aView is nil, any existing accessory view is removed.  If aView is the same as the current accessory view, this method does nothing.  Returns the previous accessory view or nil if no accessory view was previously set.

See also:  - accessoryView

NS_DEV_DOCFOR:objc_method:[FontPanel-setEnabled:];,setEnabled:

- setEnabled:(BOOL)flag

Sets whether the Font panel's Set button is enabled (the default state).  Even when disabled, the Font panel allows the user to preview fonts.  However, when the Font panel is disabled, the user can't apply the selected font to text in the application's main window.  

You can use this method to disable the user interface to the font selection system when its actions would be inappropriate.  For example, you might disable the font selection system when your application has no document window.

See also:  - isEnabled

NS_DEV_DOCFOR:objc_method:[FontPanel-setPanelFont:isMultiple:];,setPanelFont:isMultiple:

- setPanelFont:fontObj isMultiple:(BOOL)flag

Sets the font that the FontPanel is currently manipulating.  This message should only be sent by the FontManager.  Do not send a setPanelFont:isMultiple: message directly.

NS_DEV_DOCFOR:objc_method:[FontPanel-textDidEnd:endChar:];,textDidEnd:endChar:

- textDidEnd:textObject endChar:(unsigned short)endChar

A textDidEnd:endChar: message is sent to the FontPanel object when editing is completed in the Size field.  This method updates the Size browser and the preview field.

See also:  - textDidGetKeys:isEmpty:, - textDidEnd:endChar: (Text)

NS_DEV_DOCFOR:objc_method:[FontPanel-textDidGetKeys:isEmpty:];,textDidGetKeys:isEmpty:

- textDidGetKeys:textObject isEmpty:(BOOL)flag

A textDidGetKeys:isEmpty: message is sent to the FontPanel object whenever the Size field is typed in or emptied.

See also:  - textDidEnd:endChar:, - textDidGetKeys:isEmpty: (Text)

NS_DEV_DOCFOR:objc_method:[FontPanel-windowWillResize:toSize:];,windowWillResize:toSize:

- windowWillResize:sender toSize:(NXSize *)frameSize

Keeps the FontPanel from being sized too small to accommodate the browser columns and accessory view.

See also:  - windowWillResize:toSize: (Window)

NS_DEV_DOCFOR:objc_method:[FontPanel-worksWhenModal];,worksWhenModal

- (BOOL)worksWhenModal

Returns whether the FontPanel will operate while a modal panel is displayed within the application.  By default, this method returns YES.

See also:  - worksWhenModal (Panel)